package cn.tedu.csmall.stock.webapi.quartz.config; 
 /*
 @Time: 2023/3/30 16:56
 @Author:GShuai
 @File:StockConfig.class
 @Software:IntelliJ IDEA
*/


import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class RabbitStockConfig {
    // 使用常量定义交换机路由key和队列名称
    public static final String STOCK_TB_EX="stock_tb_ex";
    public static final String STOCK_TB_ROUT="stock_tb_rout";
    public static final String STOCK_TB_QUEUE="stock_tb_queue";

    // 声明交换机对象，保存到Spring容器中
    // 根据实际需要生成交换机的数量,这里就是一个
    @Bean
    public DirectExchange tbDirectExchange(){
        return new DirectExchange(STOCK_TB_EX);
    }

    // 声明队列对象，保存到Spring容器
    @Bean
    public Queue tbQueue(){
        return new Queue(STOCK_TB_QUEUE);
    }

    // 声明路由Key的关系绑定，路由key不是实际对象，本质上是一个记录关系的对象
    // 它记录了哪个交换机和哪个队列的关系
    @Bean
    public Binding tbBinding() {
        return BindingBuilder.bind(tbQueue()).to(tbDirectExchange()).with(STOCK_TB_ROUT);
    }
}
